#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e5 + 10;
// trie树也可以存整数
// 0≤Ai<2的31次方 只需要存31位
const int M = 31 * N;
int arr[N];
int son[M][2], index = 0;
void insert(int x)
{
    int p = 0;
    // 从最高位开始存
    for (int i = 30; i >= 0; i--)
    {
        int u = (x >> i) & 1;
        if (!son[p][u])
            son[p][u] = ++index;
        p = son[p][u];
    }
}
int query(int x)
{
    int p = 0;
    int res = 0;
    // 从最位开始找与x异或最大的数
    for (int i = 30; i >= 0; i--)
    {
        int u = (x >> i) & 1;
        if (son[p][!u])
        {
            p = son[p][!u];
            res = (res << 1) + !u;
        }
        else if (son[p][u])
        {
            p = son[p][u];
            res = (res << 1) + u;
        }
        // 不可能出现
        // else break;
    }
    return res;
}
int main()
{
    int m;
    cin >> m;
    // 插入
    for (int i = 0; i < m; i++)
    {
        cin >> arr[i];
        insert(arr[i]);
    }
    // 查询
    int res = 0;
    for (int i = 0; i < m; i++)
    {
        res = max(res, query(arr[i]) ^ arr[i]);
    }
    // 输出答案
    cout << res;
    cout.flush();
    return 0;
}